Thread Lifecycle এবং তার ধাপসমূহ

Java Technologies - Java.lang প্যাকেজ (Java.lang Package) - Thread এবং Runnable ইন্টারফেস
240

Thread Lifecycle হল একটি থ্রেডের বিভিন্ন অবস্থার (state) সিরিজ যা একটি থ্রেড তার সৃষ্টি থেকে শুরু করে তার কার্যক্রম শেষ হওয়া পর্যন্ত পাড়ি দেয়। Java তে থ্রেডের lifecycle বেশ কয়েকটি ধাপে বিভক্ত এবং থ্রেডের বিভিন্ন অবস্থার মধ্যে পরিবর্তিত হতে পারে। প্রতিটি ধাপের মধ্যে নির্দিষ্ট কাজ এবং অবস্থান থাকে, যা থ্রেডের কার্যক্ষমতা এবং কন্ট্রোলকে নির্ধারণ করে।

Java তে থ্রেডের lifecycle এবং তার বিভিন্ন ধাপের মধ্যে পার্থক্য করার জন্য আমরা Thread ক্লাস এবং Thread States ধারণা ব্যবহার করি।

Thread Lifecycle

একটি থ্রেড তার জীবনচক্রের মধ্যে ছয়টি ভিন্ন ধাপে থাকতে পারে:

  1. New (Newborn State)
  2. Runnable (Ready to Run)
  3. Blocked
  4. Waiting
  5. Timed Waiting
  6. Terminated (Dead)

1. New (Newborn State)

  • একটি থ্রেড যখন তৈরি করা হয়, কিন্তু চালু করা হয়নি, তখন সেটি New অবস্থায় থাকে।
  • এই অবস্থায়, থ্রেডটি কেবলমাত্র তৈরি হয়েছে, কিন্তু start() মেথড কল করা হয়নি এবং কাজ শুরু হয়নি।

এটি থ্রেডের প্রথম ধাপ।

Thread t = new Thread();

2. Runnable (Ready to Run)

  • থ্রেড যখন start() মেথড কল করা হয়, তখন এটি Runnable অবস্থায় চলে যায়।
  • এখানে থ্রেড CPU থেকে কার্যকরী হতে প্রস্তুত থাকে, কিন্তু CPU time slice পাওয়ার জন্য অপেক্ষা করে।
  • Runnable অবস্থায় থাকা থ্রেড CPU পাওয়ার জন্য Thread Scheduler এর উপর নির্ভরশীল।

এটি থ্রেডের দ্বিতীয় ধাপ।

t.start();  // Now the thread enters the Runnable state.

3. Blocked

  • Blocked অবস্থায় থাকা থ্রেডটি একটি নির্দিষ্ট রিসোর্স (যেমন, I/O অপারেশন বা synchronized ব্লক) অ্যাক্সেস করার জন্য অপেক্ষা করছে।
  • এটি তখন ঘটে যখন থ্রেড synchronized ব্লক বা মেথড ব্যবহার করে, এবং ঐ রিসোর্সটি অন্য থ্রেড দ্বারা ব্যস্ত থাকে।
  • Blocked অবস্থায় থাকা থ্রেড CPU তে থাকে না, বরং অন্য থ্রেড রিসোর্সটি ব্যবহার করার পর অপেক্ষা করে।

এটি থ্রেডের তৃতীয় ধাপ।

synchronized (someObject) {
    // Some code block that will be blocked
}

4. Waiting

  • Waiting অবস্থায় থাকা থ্রেডটি অন্য থ্রেডের সিগন্যাল বা নির্দিষ্ট সময়ের জন্য অপেক্ষা করছে।
  • এই অবস্থায় থাকলে, থ্রেডটি Object.wait(), Thread.join(), অথবা Thread.sleep() মেথডের মাধ্যমে সময়ক্ষেপণ বা অপেক্ষা করে।
  • Waiting অবস্থায় থাকা থ্রেড কেবল অন্য থ্রেডের সিগন্যালের মাধ্যমে পুনরায় Runnable অবস্থায় ফিরে আসতে পারে।

এটি থ্রেডের চতুর্থ ধাপ।

synchronized (someObject) {
    someObject.wait();  // The thread enters the Waiting state
}

5. Timed Waiting

  • Timed Waiting অবস্থায় থাকা থ্রেডটি একটি নির্দিষ্ট সময়ের জন্য অপেক্ষা করছে, যেমন sleep() বা join() মেথডে সময় নির্দিষ্ট করা হয়।
  • এখানে থ্রেডটি একটি নির্দিষ্ট সময়ের জন্য অপেক্ষা করবে, এবং সময় শেষ হলে এটি Runnable অবস্থায় ফিরে আসবে।

এটি থ্রেডের পঞ্চম ধাপ।

Thread.sleep(1000);  // The thread enters Timed Waiting state for 1000 milliseconds

6. Terminated (Dead)

  • Terminated (Dead) অবস্থায় থাকা থ্রেডটি তার কার্যক্রম সম্পূর্ণ করেছে এবং থ্রেডটি আর পুনরায় চালানো যাবে না।
  • এটি তখন ঘটে যখন থ্রেডের run() মেথড সম্পন্ন হয়ে যায় বা থ্রেডটি কোনো কারণে থামিয়ে দেওয়া হয়।

এটি থ্রেডের ষষ্ঠ ধাপ।

t.run();  // After execution, the thread enters the Dead state

Thread Lifecycle Diagram

একটি সাধারণ থ্রেড জীবনচক্রের ডায়াগ্রাম:

   +-----------+
   |   New     | ----> Thread is created but not started
   +-----------+
         |
         v
   +-----------+
   | Runnable  | ----> Thread is ready to run, waiting for CPU time
   +-----------+
         |
         v
   +-----------+
   | Blocked   | ----> Waiting for a resource to be available
   +-----------+
         |
         v
   +-----------+
   | Waiting   | ----> Waiting for a signal or a condition to be met
   +-----------+
         |
         v
   +-----------+
   | Timed     | ----> Waiting for a specific time period
   +-----------+
         |
         v
   +-----------+
   | Terminated| ----> Thread has finished its execution
   +-----------+

Thread State Transition:

  • New to Runnable: start() মেথড কল করলে থ্রেড Runnable অবস্থায় চলে যায়।
  • Runnable to Blocked: যদি থ্রেড একটি synchronized রিসোর্স অ্যাক্সেস করতে চায় এবং তা অন্য থ্রেড দ্বারা ব্যস্ত থাকে।
  • Runnable to Waiting: যদি থ্রেড wait(), join(), বা sleep() মেথড ব্যবহার করে।
  • Waiting to Runnable: অন্য থ্রেড সিগন্যাল দিলে বা নির্দিষ্ট সময় শেষ হলে থ্রেড Runnable অবস্থায় ফিরে আসে।
  • Any state to Terminated: থ্রেড কার্যক্রম সম্পন্ন করলে বা থ্রেডটির run() মেথড শেষ হলে থ্রেড Terminated অবস্থায় চলে যায়।

Java তে থ্রেড লাইফ সাইকেল মোট ৬টি ধাপে বিভক্ত এবং প্রতিটি ধাপে থ্রেড বিভিন্ন অবস্থায় থাকে। এটি Runnable, Blocked, Waiting, Timed Waiting, এবং Terminated এই সব অবস্থার মধ্যে চলে। থ্রেড পরিচালনা করতে এবং সঠিক সময় ও উপায়ে তার অবস্থান শনাক্ত করতে Thread Lifecycle বোঝা অত্যন্ত গুরুত্বপূর্ণ।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...